/*
 * PublicRandom.cpp
 *
 *  Created on: 2016-12-6
 *      Author: root
 */
#include"PublicRandom.h"
#include<stdlib.h>
PublicRandom::PublicRandom(){
    m_list.clear();
    srand(time(NULL));
}
PublicRandom::~PublicRandom(){
    m_list.clear();
}
void PublicRandom::Lock(){
    m_List_Mutex.Lock();
}
void PublicRandom::UnLock(){
    m_List_Mutex.UnLock();
}
bool PublicRandom::find(std::string member){
    bool bFind=false;
    Lock();
    IPLIST::iterator it=m_list.begin();
    while(it!=m_list.end()){
		if(strcmp(it->c_str(),member.c_str())==0){
			bFind=true;
			break;
        }
		it++;
    }
    UnLock();
    return bFind;
}
bool  PublicRandom::Empty(){
    return empty();
}
bool  PublicRandom::empty(){
    bool bEmpty=false;
    Lock();
    bEmpty=m_list.empty();
    UnLock();
    return bEmpty;
}
size_t PublicRandom::size(){
    size_t listsize=0;
    Lock();
    listsize=m_list.size();
    UnLock();
    return listsize;
}
void  PublicRandom::InsertSetList(SETIPLIST list){
    SETIPLIST::iterator it=list.begin();
    while(it!=list.end()){
		PushList(it->c_str());
		it++;
    }
}

void  PublicRandom::PushList(std::string member){
    Lock();
    if(m_list.empty()==true){
		m_list.push_back(member);
    }else{
//随机将
		int Pos=rand()%m_list.size();
		std::string tmp=m_list[Pos];
		m_list[Pos]=member;
		m_list.push_back(tmp);
    }
    UnLock();
}
void  PublicRandom::insert(std::string member){
    PushList(member);
}
//移除一个数值
std::string  PublicRandom::PopList(){
    std::string member="";
    Lock();
    if(m_list.empty()==false){
		member=m_list.back();
		m_list.pop_back();
    }
    UnLock();
    return member;
}
